查看原文
其他

ANOVA在手,多组比较不犯愁 | 协和八

2016-08-25 张之昊 协和八

小编按:用尽洪荒之力终于搞定了 t 检验,但是实战中只掌握这一个武器可不行!接下来就让我们一起愉快地学习 ANOVA 吧~

▲▼▲▼

之前的几个月里,我们一直在用 t 检验比较两组数据的平均值这个问题上兜兜转转。直到上一集《要比较三组数据,t 检验还能用吗?》,我们终于迈出了重要的一步,从两组来到了三组!

这时也许你的内心受到了 0.05 点伤害:哼哼, 比较两组讲了十集,三组再讲十集,然后四组、五组……这样学统计,真是鬼才知道我们会经历什么啊!

一个会让你稍感宽慰的消息是,其实三组和三组以上在本质上没有太大的区别,都可以用相同的办法搞定。

在上一集里,相信我们已经说服了大家,如果用多个 t 检验两两比较三组数据的平均值,就会产生「多重检验」(multiple comparison)问题,使得我们更可能把没有显著性的差别误以为是显著的(也就是增加犯第一类错误的可能性)。

那么不止三组的时候呢?这个问题同样存在,而且随着组数的增加,多重检验的问题会越来越严重(想想看为什么?)。而能一揽子解决这个问题的最流行的方法,就是我们上一集提到过的方差分析(Analysis of Variance),简称 ANOVA

ANOVA 这个方法,是我们的老熟人、频率学派统计学的代表人物 R. A. Fisher 费希尔老爷子的成名作,发表于 1918 年。虽然到现在只有不到一百年的历史,但因其简明清晰而席卷了包括医学、社会科学、工业应用等各个研究领域。

一位智者曾经说过(咳咳,捂脸承认这是我说的),不会用 ANOVA ,还好意思在科研圈混?为了继续在知识的海洋里上(yu)下(kuai)求(wan)索(shua),今天这一集就让我们一起来解剖一下 ANOVA 这门必备技能里头都有些什么道道。

▼▲

要解释 ANOVA 的原理,我们还得从它的名字开始。既然它的名字叫方差分析,那么一定就和方差(variance)有点关系了。在许久以前的《数据到手了,第一件事该干啥》,我们提到过样本方差(sample variance),它是描述一个连续型变量样本中各数据点偏离它们均值的程度的统计量,公式是:


其中 n 为样本中数据点的数量,为第 i 个数据的值,为算术平均值。

为什么方差能够表示数据点的发散程度呢?在这个式子里,分母只是一个常数,在这里我们不妨暂时先把它忽略。方差定义里重要的一块,在于分子上的,它就是先找出每个数据点和整个样本均值之差,然后把它们一一平方然后再求和。之所以要平方,是因为我们对数据点的发散程度感兴趣,如果不平方的话,大于和小于平均值的数据点偏离平均值的量就会相互抵消。我们把上述算式的分子上的这一块儿称为总平方和(total sum of squares):


这一定义看起来十分简单,似乎只是回到了我们以前讲过的随机误差(可回顾《算术平均数:简单背后有乾坤》《正态分布到底是怎么来的?》)。

的确,如果我们的样本里包含的都是没有差异的个体(也就是说样本平均值能代表这些个体的共同性质)时,总平方和大致描绘的就是每个个体的实际数据围绕它们共同性质所决定的理论平均值的波动程度。然而,如果样本里包含了两组或者更多组性质不同的个体,事情就不那么简单了。

我们用两个简单的例子来说明这个问题。让我们回到蓝精灵的食堂,我们上集说到,由于包子大受欢迎供不应求,现在食堂里有康师傅、王师傅和格格巫三位包子师傅。为了简单起见,我们暂时让王师傅去休个假。假设蓝精灵从康师傅和格格巫的窗口分别随机挑了若干个包子,然后称量出重量,得到了下图所示的样本(图中蓝色数据点为格格巫制作的包子,红色数据点为康师傅制作的包子,注意 y 轴并非从 0 开始):


可以看到,来自格格巫和康师傅的数据点混杂在一起,直观上看不出什么区别。如果我们不把他们俩制作的包子用不同颜色标出,我们就会倾向于认为这些数据点来自于同一个总体,而且大约围绕 50 克左右的平均值上下波动。

的确,如果我们把包子按照是谁做的分成两组,单独求出两组的重量平均值,会发现它们非常接近。如果我们用独立样本 t 检验来对两者做比较,也不会得到有显著性的结果。在这一个例子里,样本的总平方和基本上就会反映两组包子所构成的共同总体的波动情况。

现在让我们再来看看另一种情形,图中蓝色、红色数据点依然分别为格格巫和康师傅制作的包子:


你一定能一眼看出它和上一个例子的区别——尽管这些包子都来自同一个食堂,因而被我们放到了同一个样本里头,但是我们很容易能看到,这个样本其实包含了两类包子。

第一类是蓝色代表的格格巫的包子,它们的平均值大概在 45 克左右,而第二类是红色代表的业界良心康师傅的包子,其平均值大概在 55 克左右。如果把两组数据做个 t 检验,毫无疑问结果将会非常显著。但如果我们不论出处,那么把它们混在一起计算整个样本的平均重量仍然大约是 50 克。

这样一来,尽管我们可以还用之前的公式计算这个样本的总平方和,但是可以想象,这个总平方和里面其实包含了两个性质不同的部分。回想一下,计算总平方和,我们对每个数据点先求出它和样本平均值之差,然后取平方求和。例如,对上图中来自格格巫的重量为 44 克的包子,它和样本平均值 50 克相差 6 克。但是,在 6 克的差距里,大约有 5 克是格格巫所做的包子的重量平均值( 45 克)与样本平均值( 50 克)的差别,剩下的 1 克则可能是格格巫做这个包子时随机手抖的产物。

因此,要考虑不同因素对总平方和的贡献,我们需要进一步把总平方和给分成不同的成分。既然我们现在考虑的是组别和均值之间的关系,那么总平方和就可以分成「组间平方和」(between-group sum of squares)和「组内平方和」(within-group sum of squares)两个部分。顾名思义,组间平方和对应的是各组的平均值之间的差别,而组内平方和则是各数据点与自己所在组的平均值之间的差别。

在上面的两个图中,组间平方和大致对应于红、蓝两团数据点之间的距离,而组内平方和对应于红、蓝两组数据各自有多分散。组间、组内平方和具体的公式稍稍有些繁琐,我们先按下不表,在后面的例子里会为大家具体展示。

回顾一下前面的两个例子,试想一下两个样本的组间平方和、组内平方和与总平方和之间的关系会有什么不同?

不用具体计算,相信也能想到,在第一个样本里,由于两组各自的平均值就很接近,它们和整个样本的平均值自然就没有什么区别,因而组间平方和就会很小,总平方和里头大部分都是组内平方和。

第二个样本呢?情况恰恰相反。因为两组包子各自的平均重量就相去甚远,所以组间平方和贡献了大部分的总平方和,而组内平方和就只是小头了。

从这里我们是否能得到一点启示——怎样利用组间平方和、组内平方和、总平方和之间的关系来判断各组平均值之间是否有差异?答案就在于总平方和是如何分配的。

记住,我们的原假设是各组平均值之间没有差异。在原假设成立的情况下,组间平方和应该相对。如果组间平方和大,组内平方和小,原假设成立的可能性就小,也就是说各组平均值之间更可能存在差异;如果组间平方和小,组内平方和大,则代表现有数据还不足以推翻原假设。

这个思路恰恰就是 ANOVA 的基本原理!把它弄懂,我们就已经领会了费希尔当年发明 ANOVA 的思想精髓,剩下的就只是技术上的细节了。值得强调的是,虽然我们引出这个思路用的例子里面只有两个组,但是它与分组的数量并没有关系——无论我们有几个组,都可以按照前面的定义算出组间平方和与组内平方和,然后将它们进行比较。因此,ANOVA 可以用于任意的多组数据平均值间的比较。

为了让大家进一步掌握 ANOVA 的计算,下面我们来看一个有具体数字和运算的示例。

现在让我们把王师傅请回来,假设蓝精灵分别在格格巫、康师傅、王师傅三人的包子窗口随机抽取几个包子,得到了下列数据:

包子师傅

格格巫

康师傅

王师傅

 

 

包子重量

(克)

50

53

55

45

53

53

48

56

50

44

55

51

43

54

56

50

57

48

怎样用 ANOVA 的思路来判断三个包子师傅卖出的包子平均重量有没有差别?

首先,我们来计算总平方和。把三组数据混在一起,取算术平均值,得到 51.2 克。因此总平方和就是各数据点分别减去 51.2(以下略去单位)再平方,然后把所有这些平方加起来:


接下来我们要分别计算组间组内平方和,而两者都需要先知道各组组内的平均值——格格巫、康师傅、王师傅各自的 6 个包子的平均重量分别是 46.7,54.7,52.2(格格巫又是你!!)。

根据组间平方和的定义(各组平均值与整个样本平均值之差的平方和),我们得到:


其中每个平方和前面的 6 是各组数据点的个数。为什么要乘以每组数据点的个数?因为不管是总平方和、组间平方和还是组内平方和,它们都是来自每个数据点的平方和,比如说,来自格格巫的 6 个包子虽然重量不同,但在 ANOVA 这个背景下它们拥有一个共同的性质(平均重量为 46.7 克),因此在计算组间平方和时要把 这一项按 6 次计入。

最后,我们来计算组内平方和——相当于把各组自己当成一个小「总体」,算出「总平方和」,然后再加起来,也就是



算术做完了,你有没有发现一点什么? 如果我们把组间平方和 201 和组内平方和 107.4 相加,就会得到总平方和(308.5,这里略有一些偏差是因为计算过程中的四舍五入导致的)。

这并不是巧合,在理论上可以证明总平方和就是组间平方和、组内平方和两者之和。换言之,在 ANOVA 这个模型里,样本的波动情况可以被组间和组内平方和瓜分完毕,也就是说样本中数据点之间取值的不同只可能有组与组之间的差别以及组内随机误差这两种成因。

回到我们一开始想要回答的问题:这三组包子的平均重量有没有差别?比较一下组间平方和与组内平方和,容易看到组间平方和比组内平方和大了许多,从而占据了总平方和的大部分。因此,我们可以初步判断,这三组包子的平均重量相同的可能性不大。

但是,作为训练有素的科研狗,我们显然不能满足于这样模糊的判断。为了得出精确的结论,我们能不能从数据中得到一个针对于原假设「三组包子的平均重量相同」的 p 值?在下一集里,我们将继续沿着今天的思路,一起重游百年以前费希尔建立 ANOVA 方法的足迹,为大家介绍 ANOVA 背后的统计学模型以及如何确定显著性

回复「统计学」可查看「说人话的统计学」系列合辑,

或点击下方标题可阅读本系列任意文章

>>> 干货 <<<

你真的懂p值吗?

做统计,多少数据才算够?(上)

做统计,多少数据才算够?(下)

提升统计功效,让评审心服口服!

你的科研成果都是真的吗?

见识数据分析的「独孤九剑」

贝叶斯vs频率派:武功到底哪家强?

数据到手了,第一件事先干啥?

算术平均数:简单背后有乾坤

正态分布到底是怎么来的?

想玩转t检验?你得从这一篇看起

就是要实用!t 检验的七十二变

不是正态分布,t 检验还能用吗?

只有15个标本,也能指望 t 检验吗?

样本分布不正态?数据变换来救场!

数据变换的万能钥匙:Box-Cox变换

t 检验用不了?别慌,还有神奇的非参数检验

只讲 p 值,不讲效应大小,都是耍流氓!

找出 t 检验的效应大小,对耍流氓 say no!

用置信区间,就是这么(不)自信!

如何确定 t 检验的置信区间

优雅秀出你的 t 检验,提升Paper逼格!

要做 t 检验,这两口毒奶可喝不得!

要比较三组数据,t 检验还能用吗?

>>> 自检 <<<

妈妈说答对的童鞋才能中奖

统计学的十个误区,你答对了吗?

>>> 番外篇 <<<

说人话的统计学:一份迟来的邀请

作者:张之昊

编辑:黑草乌叶


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存